package com.vca.common.model.sf;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="msgDataUpdate对象", description="顺丰订单取消")
public class MsgDataUpdate implements Serializable {
    private static final long serialVersionUID = -7039508801629550900L;


    @ApiModelProperty(value = "客户订单号")
    @NotBlank(message = "客户订单号不能为空")
    private String orderId;

    @ApiModelProperty(value = "客户订单操作标识: 1:确认 (丰桥下订单接口默认自动确认，不需客户重复确认，该操作用在其它非自动确认的场景) 2:取消")
    private Integer dealType;

    @ApiModelProperty(value = "响应报文的语言， 缺省值为zh-CN")
    @NotBlank(message = "响应报文的语言不能为空")
    private String language;

    @ApiModelProperty(value = "顺丰运单号(如dealtype=1， 必填)")
    private List<WaybillNoInfo> waybillNoInfoList;

    @ApiModelProperty(value = "报关批次")
    private String customsBatchs;

    @ApiModelProperty(value = "揽收员工号")
    private String collectEmpCode;

    @ApiModelProperty(value = "头程运单号")
    private String inProcessWaybillNo;

    @ApiModelProperty(value = "原寄地网点代码")
    private String sourceZoneCode;

    @ApiModelProperty(value = "目的地网点代码")
    private String destZoneCode;

    @ApiModelProperty(value = "订单货物总重量，包含子母 件，单位千克，精确到小数点 后3位，如果提供此值，必 须>0")
    private Double totalWeight;

    @ApiModelProperty(value = "订单货物总体积，单位立方厘 米，精确到小数点后3位，会 用于计抛（是否计抛具体商务 沟通中双方约定）")
    private Double totalVolume;

    @ApiModelProperty(value = "快件产品类别，支持附录《快 件产品类别表》的产品编码 值，仅可使用与顺丰销售约定 的快件产品")
    private Integer expressTypeId;

    @ApiModelProperty(value = "扩展属性")
    private List<ExtraInfo> extraInfoList;

    @ApiModelProperty(value = "客户订单货物总长")
    private Double totalLength;

    @ApiModelProperty(value = "客户订单货物总宽")
    private Double totalWidth;

    @ApiModelProperty(value = "客户订单货物总高")
    private Double totalHeight;

    @ApiModelProperty(value = "增值服务信息")
    private List<Service> serviceList;

    @ApiModelProperty(value = "是否走新通用确认1：支持修改联系人 2：支持改其他客户订单默认0")
    private Integer isConfirmNew;

    @ApiModelProperty(value = "收件人信息")
    private OrderContactInfo destContactInfo;

    @ApiModelProperty(value = "是否通过手持终端 通知顺丰收派 员上门收件，支持以下值： 1：要求 0：不要求")
    private Integer isDocall;

    @ApiModelProperty(value = "1. 特殊派送类型代码 身份验证 2. 极效前置单")
    private String specialDeliveryTypeCode;

    @ApiModelProperty(value = "1> 特殊派件具体表述 证件类型:证件后8位 如：1:09296231（1表示身份证，暂不支持其他证件） 2>.极效前置单时:Y:若不支持则返回普通运单N:若不支持则返回错误码")
    private String specialDeliveryValue;

    @ApiModelProperty(value = "预约时间(上门揽收时间)")
    private Date sendStartTm;

    @ApiModelProperty(value = "上门揽收截止时间")
    private Date pickupAppointEndtime;

}
